package main

import "fmt"

// map 是 Go 内置关联数据类型（ 在一些其他的语言中称为哈希(hash) 或者字典(dict) ）。
// 要创建一个空 map，需要使用内建的 make: make(map[key-type]val-type).使用典型的 make[key] = val 语法来设置键值对。
// 使用例如 fmt.Println 来打印一个 map 将会输出所有的 键值对。使用 name[key] 来获取一个键的值
// 当对一个 map 调用内建的 len 时，返回的是键值对 数目,内建的 delete 可以从一个 map 中移除键值对
// 当从一个 map 中取值时，可选的第二返回值指示这个键 是否在这个 map 中。这可以用来消除键不存在和键有零值， 像 0 或者 "" 而产生的歧义。这里我们不需要值，所以 用_空白标识符(blank identifier)_忽略。
// 你也可以通过这个语法在同一行声明和初始化一个新的 map。
// 注意一个 map 在使用 fmt.Println 打印的时候，是以 map[k:v k:v] 的格式输出的。

func main() {
	m := make(map[string]int)
	m["k1"] = 8
	m["k2"] = 12
	fmt.Println("map:", m)

	v1 := m["k1"]
	fmt.Println("v1: ", v1)
	fmt.Println("len: ", len(m))
	delete(m, "k2")
	fmt.Println("map: ", m)

	_, prs := m["k2"]
	fmt.Println("prs: ", prs)

	n := map[string]int{"foo":1, "bar":2}
	fmt.Println("map: ", n)
}